home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / pcboard / bcmx120.zip / INFOFORM.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-07-03  |  11KB  |  712 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     Integer  INTEGER012
  34.     Integer  INTEGER013
  35.     Integer  INTEGER014
  36.     Integer  INTEGER015
  37.     Integer  INTEGER016
  38.     Integer  INTEGER017
  39.     Integer  INTEGER018
  40.     Integer  INTEGER019
  41.     Integer  INTEGER020
  42.     Integer  INTEGER021
  43.     Integer  INTEGER022
  44.     Integer  INTEGER023
  45.     Integer  INTEGER024
  46.     Integer  INTEGER025
  47.     Integer  INTEGER026
  48.     Integer  INTEGER027
  49.     Integer  INTEGER028
  50.     Integer  INTEGER029
  51.     Integer  INTEGER030
  52.     Integer  INTEGER031
  53.     Integer  INTEGER032
  54.     Integer  INTEGER033
  55.     String   STRING001
  56.     String   STRING002
  57.     String   STRING003
  58.     String   STRING004
  59.     String   STRING005
  60.     String   STRING006
  61.     String   STRING007
  62.     String   STRING008
  63.     String   STRING009
  64.     String   STRING010
  65.     String   STRING011
  66.     String   STRING012
  67.     String   STRING013
  68.     String   STRING014
  69.     String   STRING015
  70.     String   STRING016
  71.     String   STRING017
  72.     String   STRING018
  73.     String   STRING019
  74.     String   STRING020
  75.     String   STRING021
  76.     String   STRING022
  77.     String   STRING023
  78.     String   STRING024
  79.     String   STRING025
  80.     String   STRING026
  81.     String   STRING027
  82.     String   STRING028
  83.     String   STRING029
  84.     String   STRING030
  85.     String   STRING031
  86.     String   STRING032
  87.     String   STRING033
  88.     String   STRING034
  89.     String   STRING035
  90.     String   STRING036
  91.     String   STRING037
  92.     String   STRING038
  93.  
  94. ;------------------------------------------------------------------------------
  95.  
  96.     BOOLEAN003 = 0
  97.     STRING031 = String(PcbNode())
  98.     BOOLEAN001 = 0
  99.     If (LoggedOn()) Goto LABEL002
  100.     If (Exist(PPEPath() + "work\infotmp." + String(PcbNode()))) Goto LABEL001
  101.     PrintLn "ERROR: Infoform cannot figure out the users name, contact your sysop"
  102.     Wait
  103.     End
  104.     :LABEL001
  105.     STRING019 = ReadLine(PPEPath() + "work\infotmp." + String(PcbNode()), 1)
  106.     FClose -1
  107.     Delete PPEPath() + "work\infotmp." + String(PcbNode())
  108.     Goto LABEL003
  109.     :LABEL002
  110.     GetUser
  111.     STRING019 = U_Name()
  112.     :LABEL003
  113.     STRING017 = PPEPath() + "\infoform.cfg"
  114.     STRING013 = PPEPath() + "\graph\frmtext"
  115.     If (LangExt() <> "") Then
  116.         If (BOOLEAN001) Then
  117.             PrintLn "Langext = " + LangExt()
  118.             Wait
  119.         Endif
  120.         If (Exist(STRING013 + LangExt())) STRING013 = STRING013 + LangExt()
  121.     Endif
  122.     STRING029 = PPEPath() + "\work\mxlog." + String(STRING031)
  123.     STRING034 = PPEPath() + "\work\inftmp." + String(STRING031)
  124.     STRING033 = PPEPath() + "\apps\answers." + String(STRING031)
  125.     INTEGER018 = ReadLine(STRING017, 1)
  126.     If (Upper(ReadLine(STRING017, 2)) == "YES") BOOLEAN002 = 1
  127.     STRING030 = PPEPath() + "mx.cfg"
  128.     If (BOOLEAN002) Then
  129.         If (LoggedOn()) Goto LABEL004
  130.         If (Exist(STRING030)) Then
  131.             If (Upper(ReadLine(STRING030, 3)) == "YES") Then
  132.                 FAppend 3, STRING029, 1, 0
  133.                 Goto LABEL004
  134.             Endif
  135.             BOOLEAN002 = 0
  136.         Endif
  137.     Endif
  138.     :LABEL004
  139.     INTEGER014 = 1
  140.     STRING026 = Chr(13)
  141.     STRING027 = Chr(27)
  142.     STRING028 = Chr(7)
  143.     If (BOOLEAN002) Then
  144.         STRING015 = "Infoform started at " + String(Time())
  145.         Gosub LABEL023
  146.     Endif
  147.     If (AnsiOn()) Goto LABEL005
  148.     If (BOOLEAN002) Then
  149.         STRING015 = "No ansi, exiting infoform at " + String(Time())
  150.         Gosub LABEL023
  151.     Endif
  152.     Newline
  153.     PrintLn "No ansi capability, exiting infoform"
  154.     End
  155.     :LABEL005
  156.     INTEGER014 = 1
  157.     If (LoggedOn() && U_Expert) SaveScrn
  158.     StartDisp 1
  159.     STRING035 = PPEPath() + "cfg\frmmenus.cfg"
  160.     Tokenize ReadLine(STRING035, 1)
  161.     INTEGER028 = GetToken()
  162.     INTEGER019 = GetToken()
  163.     :LABEL006
  164.     INTEGER026 = Random(Time())
  165.     INTEGER026 = Random(INTEGER028 - 1) + 1
  166.     INTEGER027 = INTEGER026 - 1 + 1
  167.     Tokenize ReadLine(STRING035, INTEGER027 + 1)
  168.     INTEGER029 = GetToken()
  169.     INTEGER030 = GetToken()
  170.     INTEGER010 = GetToken()
  171.     INTEGER011 = GetToken()
  172.     INTEGER021 = GetToken()
  173.     STRING036 = GetToken()
  174.     STRING032 = GetToken()
  175.     INTEGER015 = INTEGER018
  176.     STRING038 = PPEPath() + "mnutxt\frmmnu"
  177.     If (Exist(STRING038 + String(INTEGER026) + LangExt())) Then
  178.         STRING038 = PPEPath() + "mnutxt\frmmnu" + String(INTEGER026) + LangExt()
  179.     ElseIf (Exist(STRING038 + String(INTEGER026))) Then
  180.         STRING038 = PPEPath() + "mnutxt\frmmnu" + String(INTEGER026)
  181.     ElseIf (Exist(STRING038 + LangExt())) Then
  182.         STRING038 = PPEPath() + "mnutxt\frmmnu" + LangExt()
  183.     Endif
  184.     STRING037 = ReadLine(STRING038, 1)
  185.     STRING023 = ReadLine(STRING038, 2)
  186.     STRING022 = ReadLine(STRING038, 3)
  187.     STRING025 = ReadLine(STRING038, 4)
  188.     STRING024 = ReadLine(STRING038, 5)
  189.     INTEGER009 = Len(StripAtx(STRING037)) - 4
  190.     :LABEL007
  191.     INTEGER012 = INTEGER010
  192.     INTEGER013 = INTEGER011
  193.     INTEGER008 = 0
  194.     If (BOOLEAN003) Goto LABEL008
  195.     Color DefColor()
  196.     Cls
  197.     DispFile PPEPath() + "graph\form" + String(INTEGER026), 1 + 4
  198.     :LABEL008
  199.     Color DefColor()
  200.     If (INTEGER019 >= INTEGER018) Then
  201.         INTEGER019 = INTEGER018
  202.     Endif
  203.     If (INTEGER014 + INTEGER019 <= INTEGER015) INTEGER020 = INTEGER014 + INTEGER019 - 1
  204.     If (INTEGER014 + INTEGER019 > INTEGER015) INTEGER020 = INTEGER015
  205.     INTEGER022 = INTEGER014
  206.     INTEGER023 = INTEGER020
  207.     Color DefColor()
  208.     INTEGER017 = INTEGER014 % INTEGER019
  209.     INTEGER025 = (INTEGER014 - 1) * 2 + 3
  210.     For INTEGER016 = INTEGER014 To INTEGER020
  211.         If (INTEGER017 == 0) INTEGER017 = INTEGER019
  212.         AnsiPos INTEGER012 - INTEGER009, INTEGER013 + INTEGER017 - 1
  213.         STRING021 = ReadLine(STRING038, 5 + INTEGER016)
  214.         STRING014 = Chr(Asc("a") + INTEGER017)
  215.         Print ReplaceStr(STRING037, "%SEP%", STRING014), STRING036, STRING021
  216.         Tokenize ReadLine(STRING017, 2 + INTEGER016)
  217.         STRING021 = GetToken()
  218.         STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
  219.         STRING016 = Replace(STRING016, "=", "-")
  220.         STRING016 = Replace(STRING016, ",", "-")
  221.         STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
  222.         If (STRING021 == "YES") Then
  223.             If (Exist(STRING016)) Then
  224.                 Print STRING022
  225.             Else
  226.                 Print STRING023
  227.                 INTEGER008 = INTEGER008 + 1
  228.             Endif
  229.         ElseIf (Exist(STRING016)) Then
  230.             Print STRING024
  231.         Else
  232.             Print STRING025
  233.         Endif
  234.         Inc INTEGER017
  235.         INTEGER025 = INTEGER025 + 2
  236.     Next
  237.     If (INTEGER014 + INTEGER019 > INTEGER015) Then
  238.         INTEGER016 = INTEGER014 + INTEGER019 - INTEGER015
  239.         INTEGER024 = GetY()
  240.         For INTEGER017 = 1 To INTEGER016 - 1
  241.             AnsiPos INTEGER012 - INTEGER009, INTEGER024 + INTEGER017
  242.             Print Space(INTEGER021)
  243.         Next
  244.     Endif
  245.     BOOLEAN003 = 0
  246.     AnsiPos INTEGER012, INTEGER013
  247.     Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
  248.     :LABEL009
  249.     STRING018 = Inkey()
  250.     If (((Upper(STRING018) == "A") || (STRING018 == "UP")) || (STRING018 == "LEFT")) Then
  251.         INTEGER017 = INTEGER014 % INTEGER019
  252.         If (INTEGER017 == 0) INTEGER017 = INTEGER019
  253.         AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  254.         Print ReadLine(STRING038, INTEGER014 + 5)
  255.         If (INTEGER014 % INTEGER019 == 1) Then
  256.             INTEGER014 = INTEGER014 + INTEGER019 - 1
  257.             If (INTEGER014 > INTEGER015) INTEGER014 = INTEGER015
  258.         Else
  259.             INTEGER014 = INTEGER014 - 1 % INTEGER019
  260.         Endif
  261.         INTEGER017 = INTEGER014 % INTEGER019
  262.         If (INTEGER017 == 0) INTEGER017 = INTEGER019
  263.         AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  264.         Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
  265.         Goto LABEL009
  266.     ElseIf (((Upper(STRING018) == "Z") || (STRING018 == "DOWN")) || (STRING018 == "RIGHT")) Then
  267.         INTEGER017 = INTEGER014 % INTEGER019
  268.         If (INTEGER017 == 0) INTEGER017 = INTEGER019
  269.         AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  270.         Print ReadLine(STRING038, INTEGER014 + 5)
  271.         If (INTEGER014 % INTEGER019 == 0) Then
  272.             INTEGER014 = INTEGER014 - INTEGER019 - 1
  273.         ElseIf (INTEGER014 == INTEGER015) Then
  274.             INTEGER014 = INTEGER022
  275.         Else
  276.             INTEGER014 = INTEGER014 + 1
  277.         Endif
  278.         INTEGER017 = INTEGER014 % INTEGER019
  279.         If (INTEGER017 == 0) INTEGER017 = INTEGER019
  280.         AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  281.         Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
  282.         Goto LABEL009
  283.     Else
  284.         If (STRING018 == STRING026) Then
  285.             INTEGER016 = INTEGER014
  286.             STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
  287.             STRING016 = Replace(STRING016, "=", "-")
  288.             STRING016 = Replace(STRING016, ",", "-")
  289.             STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
  290.             If (Exist(STRING016)) Goto LABEL010
  291.             Gosub LABEL015
  292.             INTEGER014 = INTEGER022
  293.             Goto LABEL006
  294.             Goto LABEL011
  295.             :LABEL010
  296.             STRING020 = ReadLine(STRING013, 6)
  297.             INTEGER032 = GetX()
  298.             INTEGER033 = GetY()
  299.             DefColor
  300.             AnsiPos INTEGER029, INTEGER030
  301.             If (INTEGER031 > INTEGER029) Print Space(INTEGER031 - INTEGER029 + 1)
  302.             AnsiPos INTEGER029, INTEGER030
  303.             STRING018 = YesChar()
  304.             InputYN STRING020, STRING018, 1
  305.             INTEGER031 = GetX() + 3
  306.             AnsiPos INTEGER029, INTEGER030
  307.             Print Space(INTEGER031 - INTEGER029 + 1)
  308.             If ((STRING018 == YesChar()) || (STRING018 == Upper(YesChar()))) Then
  309.                 Gosub LABEL015
  310.                 INTEGER014 = INTEGER022
  311.                 Goto LABEL006
  312.             Else
  313.                 AnsiPos INTEGER032, INTEGER033
  314.             Endif
  315.             Goto LABEL009
  316.             :LABEL011
  317.         ElseIf ((Upper(STRING018) == "Q") || (STRING018 == STRING027)) Then
  318.             If (INTEGER008 == 0) Then
  319.                 DefColor
  320.                 Cls
  321.                 If (BOOLEAN002) Then
  322.                     STRING015 = "Exiting infoform at " + String(Time())
  323.                     Gosub LABEL023
  324.                 Endif
  325.                 End
  326.             Else
  327.                 DefColor
  328.                 STRING020 = ReadLine(STRING013, 5)
  329.                 INTEGER032 = GetX()
  330.                 INTEGER033 = GetY()
  331.                 AnsiPos INTEGER029, INTEGER030
  332.                 Print STRING020
  333.                 INTEGER031 = GetX()
  334.                 AnsiPos INTEGER032, INTEGER033
  335.                 If (BOOLEAN002) Then
  336.                     STRING015 = "Not exiting, mandatory infoforms not filled out"
  337.                     Gosub LABEL023
  338.                 Endif
  339.                 If (BOOLEAN001) Return
  340.                 Goto LABEL009
  341.             Endif
  342.             End
  343.         Else
  344.             Select Case (STRING018)
  345.                 Case "HOME"
  346.                     INTEGER017 = INTEGER014 % INTEGER019
  347.                     If (INTEGER017 == 0) INTEGER017 = INTEGER019
  348.                     AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  349.                     Print ReadLine(STRING038, INTEGER014 + 5)
  350.                     INTEGER014 = INTEGER022
  351.                     INTEGER017 = INTEGER014 % INTEGER019
  352.                     If (INTEGER017 == 0) INTEGER017 = INTEGER019
  353.                     AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  354.                     Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
  355.                     Goto LABEL009
  356.                 Case "END"
  357.                     INTEGER017 = INTEGER014 % INTEGER019
  358.                     If (INTEGER017 == 0) INTEGER017 = INTEGER019
  359.                     AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  360.                     Print ReadLine(STRING038, INTEGER014 + 5)
  361.                     INTEGER014 = INTEGER023
  362.                     INTEGER017 = INTEGER014 % INTEGER019
  363.                     If (INTEGER017 == 0) INTEGER017 = INTEGER019
  364.                     AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
  365.                     Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
  366.                     Goto LABEL009
  367.                 Case ">", "CTRL PGDN"
  368.                     If (INTEGER023 + INTEGER019 <= INTEGER015) Then
  369.                         INTEGER014 = INTEGER023 + 1
  370.                         BOOLEAN003 = 1
  371.                         Goto LABEL007
  372.                     Else
  373.                         If (INTEGER023 <> INTEGER015) Then
  374.                             INTEGER014 = INTEGER023 + 1
  375.                             BOOLEAN003 = 1
  376.                             Goto LABEL007
  377.                         Endif
  378.                         MPrint STRING028
  379.                         Goto LABEL009
  380.                     Endif
  381.                 Case "?"
  382.                     DefColor
  383.                     INTEGER032 = GetX()
  384.                     INTEGER033 = GetY()
  385.                     AnsiPos 1, 23
  386.                     SaveScrn
  387.                     StartDisp 2
  388.                     Cls
  389.                     DispFile PPEPath() + "graph\frmhlp", 1 + 4
  390.                     Wait
  391.                     StartDisp 1
  392.                     RestScrn
  393.                     AnsiPos INTEGER032, INTEGER033
  394.                     Goto LABEL009
  395.                 Case "<", "CTRL PGUP"
  396.                     If (INTEGER022 - INTEGER019 >= 1) Then
  397.                         INTEGER014 = INTEGER022 - INTEGER019
  398.                         BOOLEAN003 = 1
  399.                         Goto LABEL007
  400.                     Else
  401.                         MPrint STRING028
  402.                         Goto LABEL009
  403.                     Endif
  404.                 Case Else
  405.                     If ((STRING018 >= "b") && (STRING018 <= STRING014)) Then
  406.                         INTEGER014 = INTEGER022 + Asc(STRING018) - Asc("b")
  407.                         INTEGER016 = INTEGER014
  408.                         STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
  409.                         STRING016 = Replace(STRING016, "=", "-")
  410.                         STRING016 = Replace(STRING016, ",", "-")
  411.                         STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
  412.                         If (Exist(STRING016)) Goto LABEL012
  413.                         Gosub LABEL015
  414.                         INTEGER014 = INTEGER022
  415.                         Goto LABEL006
  416.                         Goto LABEL014
  417.                         :LABEL012
  418.                         DefColor
  419.                         INTEGER032 = GetX()
  420.                         INTEGER033 = GetY()
  421.                         STRING020 = ReadLine(STRING013, 6)
  422.                         AnsiPos INTEGER029, INTEGER030
  423.                         If (INTEGER031 > INTEGER029) Print Space(INTEGER031 - INTEGER029 + 1)
  424.                         AnsiPos INTEGER029, INTEGER030
  425.                         STRING018 = YesChar()
  426.                         InputYN STRING020, STRING018, 1
  427.                         INTEGER031 = GetX() + 3
  428.                         AnsiPos INTEGER029, INTEGER030
  429.                         Print Space(INTEGER031 - INTEGER029 + 1)
  430.                         If ((STRING018 == YesChar()) || (STRING018 == Upper(YesChar()))) Then
  431.                             Gosub LABEL015
  432.                             INTEGER014 = INTEGER022
  433.                             Goto LABEL006
  434.                             Goto LABEL013
  435.                         Endif
  436.                         AnsiPos INTEGER032, INTEGER033
  437.                         :LABEL013
  438.                         Goto LABEL009
  439.                     Endif
  440.                     :LABEL014
  441.                     Goto LABEL009
  442.                 Endif
  443.             Endif
  444.     End Select
  445.     End
  446.     Gosub LABEL023
  447.     End
  448.     :LABEL015
  449.     Tokenize ReadLine(STRING017, 2 + INTEGER007)
  450.     STRING012 = GetToken()
  451.     STRING010 = GetToken()
  452.     STRING011 = GetToken()
  453.     INTEGER007 = INTEGER016
  454.     STRING005 = Chr(8)
  455.     STRING006 = Chr(127)
  456.     STRING001 = PPEPath() + "\forms\" + "form." + String(INTEGER007)
  457.     If (Exist(STRING001)) Goto LABEL016
  458.     DefColor
  459.     Cls
  460.     PrintLn "ERROR: formfile does not exist, form cannot be filled out"
  461.     PrintLn "Please contact the systop and report this to him"
  462.     Wait
  463.     Return
  464.     :LABEL016
  465.     STRING002 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
  466.     STRING002 = Replace(STRING002, "=", "-")
  467.     STRING002 = Replace(STRING002, ",", "-")
  468.     STRING002 = Replace(STRING002, ".", "-") + "." + String(INTEGER016)
  469.     DefColor
  470.     Cls
  471.     StartDisp 1
  472.     FOpen 1, STRING001, 0, 0
  473.     FCreate 2, STRING002, 1, 0
  474.     If (Ferr(2)) Then
  475.         FreshLine
  476.         PrintLn "FATAL Error: infoform cannot create file ", STRING002
  477.         PrintLn "Please contact  the sysop about this, or try to use"
  478.         PrintLn "a less exotic name"
  479.         Wait
  480.         End
  481.     Endif
  482.     While (1) Do
  483.         FGet 1, STRING021
  484.         If (Ferr(1)) Then
  485.             If (STRING021 == "") Break
  486.         Endif
  487.         INTEGER005 = InStr(STRING021, "*")
  488.         If (INTEGER005) Then
  489.             Print Left(STRING021, INTEGER005 - 1)
  490.             FPut 2, Left(STRING021, INTEGER005 - 1)
  491.             STRING004 = ""
  492.             INTEGER006 = Len(STRING021)
  493.             For INTEGER016 = INTEGER005 To INTEGER006
  494.                 STRING003 = Mid(STRING021, INTEGER016, 1)
  495.                 If (STRING003 <> "*") Then
  496.                     STRING004 = STRING004 + STRING003
  497.                     Continue
  498.                 Endif
  499.                 Print STRING004
  500.                 FPut 2, STRING004
  501.                 INTEGER001 = GetX()
  502.                 INTEGER002 = GetY()
  503.                 INTEGER017 = 0
  504.                 STRING008 = ScrText(INTEGER001, INTEGER002, 1, 0)
  505.                 While (1) Do
  506.                     STRING009 = ScrText(INTEGER001 + INTEGER017, INTEGER002, 1, 0)
  507.                     If (((STRING009 <> " ") && (STRING009 <> STRING008)) && !InStr(STRING011, STRING009)) Then
  508.                         INTEGER003 = INTEGER017 + 1
  509.                         Break
  510.                     Endif
  511.                     Inc INTEGER017
  512.                     If (INTEGER001 + INTEGER017 == 80) Then
  513.                         INTEGER003 = INTEGER017 + 1
  514.                         Break
  515.                     Endif
  516.                 EndWhile
  517.                 Gosub LABEL019
  518.                 FPut 2, STRING018
  519.                 If (STRING018 == "") Then
  520.                     Print Chr(27) + "[C"
  521.                     FPut 2, Chr(27) + "[C"
  522.                     Goto LABEL017
  523.                 Endif
  524.                 If (Len(STRING018) > 1) Then
  525.                     FPut 2, Chr(27) + "[" + String(Len(STRING018) - 1) + "D"
  526.                     Print Chr(27) + "[" + String(Len(STRING018) - 1) + "D"
  527.                 Endif
  528.                 :LABEL017
  529.                 STRING004 = ""
  530.             Next
  531.             If (STRING004 <> "") Then
  532.                 PrintLn STRING004
  533.                 FPut 2, STRING004
  534.                 Goto LABEL018
  535.             Endif
  536.             PrintLn ""
  537.             :LABEL018
  538.             FPutLn 2, ""
  539.             Continue
  540.         Endif
  541.         FPutLn 2, STRING021
  542.         PrintLn STRING021
  543.     EndWhile
  544.     FClose 1
  545.     FClose 2
  546.     If (STRING012 == "YES") Then
  547.         If (INTEGER008 > 0) INTEGER008 = INTEGER008 - 1
  548.         If (BOOLEAN002) Then
  549.             STRING015 = "Mandatory infoform (FORM." + String(INTEGER007) + ") filled out"
  550.             Gosub LABEL023
  551.         Endif
  552.     ElseIf (BOOLEAN002) Then
  553.         STRING015 = "Non mandatory infoform (FORM." + String(INTEGER007) + ") filled out"
  554.         Gosub LABEL023
  555.     Endif
  556.     Return
  557.     Return
  558.     :LABEL019
  559.     INTEGER004 = 1
  560.     STRING018 = ""
  561.     :LABEL020
  562.     STRING007 = Inkey()
  563.     If (STRING007 <> "") Then
  564.         If (STRING007 == STRING026) Then
  565.             If (Upper(STRING010) == "NO") Then
  566.                 Return
  567.                 Goto LABEL021
  568.             Endif
  569.             If (STRING018 <> "") Then
  570.                 Return
  571.             Endif
  572.             :LABEL021
  573.             Goto LABEL022
  574.         Endif
  575.         If ((STRING007 == STRING005) || (STRING007 == STRING006)) Then
  576.             If (INTEGER004 > 1) Then
  577.                 AnsiPos GetX() - 1, GetY()
  578.                 Print " "
  579.                 AnsiPos GetX() - 1, GetY()
  580.                 Dec INTEGER004
  581.                 STRING018 = Left(STRING018, INTEGER004 - 1)
  582.             Endif
  583.             Goto LABEL022
  584.         Endif
  585.         If (INTEGER004 < INTEGER003) Then
  586.             STRING018 = STRING018 + STRING007
  587.             Print STRING007
  588.             Inc INTEGER004
  589.         Endif
  590.     Endif
  591.     :LABEL022
  592.     Goto LABEL020
  593.     Return
  594.     :LABEL023
  595.     If (LoggedOn()) Goto LABEL024
  596.     FPutLn 3, "    " + STRING015
  597.     Return
  598.     :LABEL024
  599.     Log STRING015, 0
  600.     Return
  601.  
  602. ;------------------------------------------------------------------------------
  603. ;
  604. ; Usage report (before postprocessing)
  605. ;
  606. ; ■ Statements used :
  607. ;
  608. ;    7       End
  609. ;    5       Cls
  610. ;    5       Wait
  611. ;    3       Color 
  612. ;    130     Goto 
  613. ;    171     Let 
  614. ;    26      Print 
  615. ;    11      PrintLn 
  616. ;    89      If 
  617. ;    2       DispFile 
  618. ;    1       FCreate 
  619. ;    1       FOpen 
  620. ;    1       FAppend 
  621. ;    3       FClose 
  622. ;    1       FGet 
  623. ;    6       FPut 
  624. ;    3       FPutLn 
  625. ;    4       StartDisp 
  626. ;    1       GetUser
  627. ;    7       DefColor
  628. ;    1       Delete 
  629. ;    1       Log 
  630. ;    2       InputYN 
  631. ;    12      Gosub 
  632. ;    9       Return
  633. ;    3       Inc 
  634. ;    1       Dec 
  635. ;    1       Newline
  636. ;    4       Tokenize 
  637. ;    25      AnsiPos 
  638. ;    1       FreshLine
  639. ;    2       SaveScrn
  640. ;    1       RestScrn
  641. ;    2       MPrint 
  642. ;
  643. ;
  644. ; ■ Functions used :
  645. ;
  646. ;    1       -
  647. ;    1       *
  648. ;    12      %
  649. ;    126     +
  650. ;    38      -
  651. ;    44      ==
  652. ;    8       <>
  653. ;    4       <
  654. ;    6       <=
  655. ;    8       >
  656. ;    9       >=
  657. ;    70      !
  658. ;    10      &&
  659. ;    13      ||
  660. ;    5       Len(
  661. ;    8       Upper()
  662. ;    1       Mid()
  663. ;    7       Left()
  664. ;    5       Space()
  665. ;    2       Ferr()
  666. ;    10      Chr()
  667. ;    3       Asc()
  668. ;    2       InStr()
  669. ;    2       Random()
  670. ;    4       Time()
  671. ;    1       U_Name()
  672. ;    6       YesChar()
  673. ;    6       StripAtx()
  674. ;    16      Replace()
  675. ;    2       Inkey()
  676. ;    24      String()
  677. ;    21      PPEPath()
  678. ;    4       PcbNode()
  679. ;    26      ReadLine()
  680. ;    13      GetToken()
  681. ;    11      Exist()
  682. ;    8       LangExt()
  683. ;    1       AnsiOn()
  684. ;    10      GetX()
  685. ;    8       GetY()
  686. ;    3       DefColor()
  687. ;    4       LoggedOn()
  688. ;    2       ScrText()
  689. ;    1       ReplaceStr()
  690. ;
  691. ;------------------------------------------------------------------------------
  692. ;
  693. ; Analysis flags : M
  694. ;
  695. ; M - Send text to modem only ■ 4
  696. ;     Some informations are sent only to the modem, not to the local
  697. ;     screen, this is a well known way to make stealth backdoors, Check!
  698. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  699. ;
  700. ;------------------------------------------------------------------------------
  701. ;
  702. ; Postprocessing report
  703. ;
  704. ;    3       For/Next
  705. ;    2       While/EndWhile
  706. ;    50      If/Then or If/Then/Else
  707. ;    1       Select Case
  708. ;
  709. ;------------------------------------------------------------------------------
  710. ;                 AEGiS Corp - Break the routines, code against the machines!
  711. ;------------------------------------------------------------------------------
  712.